Field of the Invention
The present invention relates to image processing apparatuses for performing image processing for printing a variety of image information such as characters, photographs, graphics, and the like. More specifically, the present invention relates to a process of accelerating generation of an image such as graphics and the like.
Description of the Related Art
Conventionally, rendering is the commonly used technique of generating an image based on contour information (also referred to as edge information) of a graphic which is extracted from coordinate information or the like of the graphic for generation of an image of the graphic (e.g., Japanese Patent Laid-Open Nos. 04-170686, 08-72317, 2005-267290, and 2007-122188). Contour information is represented by straight lines. The DDA algorithm is a known technique of representing straight lines (David Rogers, “Procedural Elements for Computer Graphics,” McGraw-Hill Education, issued on Oct. 1, 1997, ISBN-10:0070535485).
A conventional renderer system employs so-called banding, in which one page of data is divided into bands which are to be processed. Such a system has a problem with graphics processing that when a page containing a large number of graphical objects is input, the rendering speed decreases. To address such a problem, a technique has been proposed in which when a page is divided into bands, a separate processing unit (thread) is allocated to each band so that the processing speed may be improved (Japanese Patent Laid-Open No. 2003-51019).
Japanese Patent Laid-Open No. 2012-185697 describes a system which allocates a processing unit (thread) to each graphic to process the graphics in parallel so that the overall parallelism may be increased in order to increase the processing speed. Edge information extracted from graphics is mapped back to their coordinate points on the page, and are synthesized or combined together. These processes can be separately performed. A thread can be allocated to each of the process of extracting edges from each graphic and the process (data synthesis) of merging data obtained by the extraction processes. If the environment in which rendering is performed has multiple CPUs or a multi-core CPU, a parallel operation can be performed in which a core thread process is mapped to an execution unit (processor core, which is also simply referred to as a core) which performs the core thread process so that each core performs a process in a time-independent manner. In such a system, the processing speed can be increased by increasing the utilization rate of each processor core and thereby exploiting the capability of the core.
In multi-core CPUs, however, the execution speed varies depending on the memory access pattern, which leads to a problem that the speed of the conventional thread allocation algorithm is not improved more than expected.